package faktorI;

public class PredElem extends Elem{
	String naziv;
	double MB;
	double MD;
	double faktorI;
	int precedence;
	boolean operator, operand, negacija;
	int id;
	private static int ukId = 0;
	
	public static void resetId(){ukId = 0;}
	
	public PredElem(){
		id = ++ukId;
		naziv = "result" + id;
		operand = true;  
	}
	
	public PredElem(Tokenstream ts){
		naziv = ts.sval;
		if("I".equals(naziv)){
			precedence = 2; operator = true; operand = false;
		}else if("ILI".equals(naziv)){
			precedence = 1;operator = true; operand = false;
		}else if("(".equals(naziv) || ")".equals(naziv)){
			precedence = 0; operator = true; operand = false;
		}else 
		{ precedence = -1;operator = false; operand = true;}
	}
	
	public PredElem(Tokenstream ts, boolean negacija){
		this(ts);
		this.negacija = negacija;
	}
	
	public String getNaziv(){return naziv;}
	public double getMB(){return MB;}
	public double getMD(){return MD;}
	public double getFaktorI(){return faktorI;}
	public int getPrecedence(){return precedence;}
	public boolean jeOperand(){return operand;}
	public boolean jeOperator(){return operator;}
	
	
	public void setNaziv(String naziv){this.naziv = naziv;}
	public void setMB(double MB){
		if(!negacija)this.MB = MB;
		else this.MD = MB;
	}
	public void setMD(double MD){
		if(!negacija)this.MD = MD;
		else this.MB = MD;
	}
	public void setFaktorI(double faktorI){
		if(!negacija)this.faktorI = faktorI;
		else this.faktorI = faktorI * -1;
		if(this.faktorI>0){
			MB = this.faktorI;
			MD = 0;
		}
		else{
			MB = 0;
			MD = this.faktorI * -1;
		}
	}
	public void setPrecedence(int precedence){this.precedence = precedence;}
	
	
	public boolean jeZakljucak(){
		if(LstZaklj.instanca().dohvatiZakljSaImenom(naziv) != null && operand) return true;
		else return false;
	}
	
	public boolean jednako(PredElem elem){
		if(elem.naziv.equals(this.naziv))return true;
		else return false;
	}
	public void refresh(){
		MB = 0;
		MD = 0;
		faktorI = 0;
	}
	
	public String toString(){
		String s = "";
		if(negacija) s+="-";	
		return s+=naziv ;}
}
